<?php

namespace app\index\controller;

use app\index\model\User;

/**
 * Class Info
 * @package app\index\controller
 */
class Info extends Base
{
    /**
     * 个人中心页面
     */
    public function index()
    {
        return view();
    }

    /**
     * 修改个人信息
     */
    public function update()
    {
        // 头像文件上传
        $file = request()->file('avatar');
        $info = null;
        if ($file) {
            // 验证文件大小与后缀名
            $info = $file
                ->validate(['size' => 156780, 'ext' => 'jpg,png'])
                ->move(ROOT_PATH . 'public' . DS . 'avatar');
            if (!$info) {
                $this->error('头像上传失败：' . $file->getError());
            }
        }
        // 获取传入参数
        $data = getInputData(['current', 'new', 'again', 'nickname', 'email']);
        // 验证传入参数
        $verify = validateData($data, 'user', 'update');
        if ($verify === true) {
            $user = User::get(session('user.id'));
            // 三个密码相关参数不为空
            if (!empty($data['current']) && !empty($data['new']) && !empty($data['again'])) {
                // 验证原密码
                if (!password_verify($data['current'], $user->password)) {
                    $this->error('修改失败：原密码不正确');
                }
                // 验证两次密码是否一致
                if ($data['new'] != $data['again']) {
                    $this->error('修改失败：两次密码不一致');
                }
                $user->password = password_hash($data['new'], PASSWORD_BCRYPT);
            }
            // 昵称不为空
            if (!empty($data['nickname'])) {
                $user->nickname = $data['nickname'];
            }
            // 邮箱不为空
            if (!empty($data['email'])) {
                $user->email = $data['email'];
            }
            if ($info) {
                $user->avatar = $info->getSaveName();
            }
            $user->save();
            session('user', $user);
            $this->success('修改成功！', 'index');
        } else {
            $this->error('修改失败：' . $verify);
        }
    }
}
